#ifndef DPLDRAWSCAN_H
#define DPLDRAWSCAN_H

#include <QObject>

struct DrawInfo
{
    int nDrawType ;
    int nGroupId  ;
    int BeamId    ;
    int nEncoderType ;
    int nSourceType  ;
};

class QImage ;


class DopplerDrawScan : public QObject
{
    Q_OBJECT

public:
    enum DRAW_TYPE
    {
        NO_TYPE = 0   ,
        A_SCAN_H      ,
        A_SCAN_V      ,
        B_SCAN_H      ,
        C_SCAN_V      ,
        S_SCAN_SOUNDPATH ,
        S_SCAN_A      ,
        S_SCAN_L
    };
    explicit DopplerDrawScan(QImage* pImage_ = NULL);
    void SetDrawType(DRAW_TYPE nType_)   ;
    void SetDrawInfo(DrawInfo* cInfo_)  ;
    void SetDrawBuff(QImage* pImage_) ;
    void update();
    virtual void Draw();

signals:
    void signalUpdateDrawing();

protected:
    QImage*   m_pImage  ;
    DrawInfo  m_cInfo   ;
};


class DplDrawAscanH:public DopplerDrawScan
{

    Q_OBJECT

public:
    DplDrawAscanH(QImage* pImage_ = NULL):DopplerDrawScan(pImage_){}
    virtual void Draw();


} ;

class DplDrawAscanV:public DopplerDrawScan
{

    Q_OBJECT

public:
    DplDrawAscanV(QImage* pImage_ = NULL):DopplerDrawScan(pImage_){}
    virtual void Draw();
} ;

class DplDrawBscanH:public DopplerDrawScan
{

    Q_OBJECT

public:
    DplDrawBscanH(QImage* pImage_ = NULL):DopplerDrawScan(pImage_){}
    virtual void Draw();
} ;

class DplDrawBscanV:public DopplerDrawScan
{
    Q_OBJECT


public:
    DplDrawBscanV(QImage* pImage_ = NULL):DopplerDrawScan(pImage_){}
    virtual void Draw();
} ;

class DplDrawCscanH:public DopplerDrawScan
{
    Q_OBJECT

public:
    DplDrawCscanH(QImage* pImage_ = NULL):DopplerDrawScan(pImage_){}
    virtual void Draw();
} ;

class DplDrawCscanV:public DopplerDrawScan
{
    Q_OBJECT

public:
    DplDrawCscanV(QImage* pImage_ = NULL):DopplerDrawScan(pImage_){}
    virtual void Draw();
} ;


class DplDrawSscan:public DopplerDrawScan
{
    Q_OBJECT

public:
    DplDrawSscan(QImage* pImage_ = NULL):DopplerDrawScan(pImage_){}
    virtual void Draw();
} ;

class DplDrawSscanA:public DopplerDrawScan
{
    Q_OBJECT

public:
    DplDrawSscanA(QImage* pImage_ = NULL):DopplerDrawScan(pImage_){}
    virtual void Draw();
} ;

class DplDrawSscanL:public DopplerDrawScan
{
    Q_OBJECT

public:
    DplDrawSscanL(QImage* pImage_ = NULL):DopplerDrawScan(pImage_){}
    virtual void Draw();
} ;
#endif // DPLDRAWSCAN_H
